package dao

import (
	"time"
)

// 这是 Dynamic 的全局公开dao对象，被service层调用!
var DynamicDao = dynamicDao{}

// 动态表
// 这是 dynamic表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type Dynamic struct {
	Id      int32     `json:"id" form:"id" db:"id" v:"id"`
	Content string    `json:"content" form:"content" db:"content" v:"content"` // 动态内容
	Type    int8      `json:"type" form:"type" db:"type" v:"type"`             // 类型：0-Go动态；1-本站动态
	Url     string    `json:"url" form:"url" db:"url" v:"url"`                 // 链接
	Sort    int8      `json:"sort" form:"sort" db:"sort" v:"sort"`             // 排序(越大越靠前)
	Ctime   time.Time `json:"ctime" form:"ctime" db:"ctime" v:"ctime"`
}

// 注意:这是 Dynamic 的私有dao对象，只能在dao层内使用!
type dynamicDao struct {
	InsertTemplate func(arg Dynamic) (int64, error)         //插入一条记录
	UpdateTemplate func(arg Dynamic) (int64, error)         //更新一条记录
	DeleteTemplate func(id int64) (int64, error)            `arg:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (Dynamic, error)          `arg:"id"` //根据传入的主键获取一条记录
	List           func(arg DynamicList) ([]Dynamic, error) //模糊分页查询
}

/*
// 这是 dynamic 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type DynamicPostman struct {
id
content
type
url
sort
ctime

}*/

// 这是 dynamic 表的批量请求参数
type DynamicReq struct {
	List []Dynamic `json:"list" form:"list"`
}

// 这是 dynamicDao.List()方法的请求参数
type DynamicList struct {
	Page
}
